import Koa from 'koa'
import cores from '@koa/cors'
import chatRouter from './chat-router.js'
import testSendEmailRouter from './send-email-test-router.js'

const app = new Koa()

// 配置跨域

// 考虑 CORS 跨域的限制
// gpt-api-proxy 发布以后，就是一个对外的公共服务了，每个人都可以访问，被攻击或者盗用的风险还是很大的，必须要考虑。

// 虽然代码中有一个 x-auth-token 可以做简单的鉴权，但它是在 url query 传递的，很容易暴露，不能完全靠它。所以我们还要再做一些其他操作，最直接的就是限制跨域。

// 首先，在 .env 文件中配置不同环境的 origin
// 然后在 src/index.js 代码中判断当前 origin 是否符合 .env 中的配置范围
app.use(
	cores({
		origin: (ctx) => {
			const origin = ctx.request.header.origin

			const configOrigin = process.env.CORS_ORIGIN
			if (configOrigin === '*') {
				return origin
			}

			if (configOrigin.split(',').includes(origin)) {
				return origin
			}

			return ''
		}
	})
)

app.use(chatRouter.routes()).use(chatRouter.allowedMethods())
app.use(testSendEmailRouter.routes()).use(testSendEmailRouter.allowedMethods())

app.use(async (ctx) => {
	ctx.body = 'chat API proxy'
})

const port = parseInt(process.env.PORT, 10) || 3002

app.listen(port)
